package com.vertx.core.common;

import io.vertx.core.json.JsonArray;
import io.vertx.core.json.JsonObject;

import java.util.List;

/**
 * @Author: fiercewind
 * @Description: 常用返回结构
 * @Date: 21:41 2018/4/19
 */
public class ResultFormat {

    /**
     * 格式化返回结果,code为状态码枚举类,data为数据
     *
     * @param code
     * @param data
     * @return
     */
    public static JsonObject format(StatusCodeMsg code, Object data) {
        JsonObject json = new JsonObject();
        json.put("status", code.getCode());
        json.put("msg", code);
        if (data != null) {
            json.put("data", data);
        } else {
            json.putNull("data");
        }
        return json;
    }

    /**
     * 格式化返回结果,code为状态码枚举类,data为数据
     *
     * @param code
     * @param data
     * @return
     */
    public static JsonObject format(StatusCodeMsg code, JsonArray data) {
        JsonObject result = new JsonObject();
        result.put("status", code.getCode());
        result.put("msg", code.getMsg());
        if (data == null) {
            data = new JsonArray();
        }
        result.put("data", data);
        return result;
    }
    /**
     * 格式化返回结果,code为状态码枚举类,data为数据
     *
     * @param code
     * @param data
     * @return
     */
    public static JsonObject format(StatusCodeMsg code, List<JsonObject> data) {
        JsonObject result = new JsonObject();
        result.put("status", code.getCode());
        result.put("msg", code.getMsg());
        if (data == null) {
            result.put("data", new JsonArray());
        } else {
            result.put("data", data);
        }
        return result;
    }
    /**
     * 格式化返回结果,code为状态码枚举类,data为数据
     *
     * @param code
     * @param data
     * @return
     */
    public static JsonObject format(StatusCodeMsg code, JsonObject data) {
        JsonObject result = new JsonObject();
        result.put("status", code.getCode());
        result.put("msg", code.getMsg());
        if (data == null) {
            data = new JsonObject();
        }
        result.put("data", data);
        return result;
    }

    /**
     * 格式化返回结果其中data为null,code为状态码枚举类
     *
     * @param code
     * @return
     */
    public static JsonObject formatAsNull(StatusCodeMsg code) {
        JsonObject result = new JsonObject();
        result.put("status", code.getCode());
        result.put("msg", code.getMsg());
        result.putNull("data");
        return result;
    }

    /**
     * 格式化返回结果其中data为{},code为状态码枚举类
     *
     * @param code
     * @return
     */
    public static JsonObject formatAsNewJson(StatusCodeMsg code) {
        JsonObject result = new JsonObject();
        result.put("status", code.getCode());
        result.put("msg", code.getMsg());
        result.put("data", new JsonObject());
        return result;
    }

    /**
     * 格式化返回结果其中data为[],code为状态码枚举类
     *
     * @param code
     * @return
     */
    public static JsonObject formatAsNewArray(StatusCodeMsg code) {
        JsonObject result = new JsonObject();
        result.put("status", code.getCode());
        result.put("msg", code.getMsg());
        result.put("data", new JsonArray());
        return result;
    }

    /**
     * 格式化返回结果其中data为0,code为状态码枚举类
     *
     * @param code
     * @return
     */
    public static JsonObject formatAsZero(StatusCodeMsg code) {
        JsonObject result = new JsonObject();
        result.put("status", code.getCode());
        result.put("msg", code.getMsg());
        result.put("data", 0);
        return result;
    }

    /**
     * 格式化返回结果其中data为1,code为状态码枚举类
     *
     * @param code
     * @return
     */
    public static JsonObject formatAsOne(StatusCodeMsg code) {
        JsonObject result = new JsonObject();
        result.put("status", code.getCode());
        result.put("msg", code.getMsg());
        result.put("data", 1);
        return result;
    }
}
